import {
	spread
} from "@/api/user";
import Cache from "@/utils/cache";
import {
	getCity
} from '@/api/api.js';
import util from '@/utils/util.js';
import Store from '@/store/index';

/**
 * 取值
 */
export function configMap(args, init) {
	if (Array.isArray(args)) {
		return args.reduce((i, v) => {
			i[v] = () => Store.getters.globalData[v];
			return i;
		}, init || {})
	} else {
		return Object.keys(args).reduce((i, v) => {
			i[v] = () => {
				const val = Store.getters.globalData[v];
				return (val === undefined || val === null || val === '') ? args[v] : val;
			};
			return i;
		}, init || {})
	}
}


/**
 * 静默授权绑定上下级，使用在已经登录后扫描了别人的推广二维码
 * @param {Object} puid
 */
export function silenceBindingSpread(options, islogin) {
	let puid = 0;
	//#ifdef H5
	puid = Cache.getItem('spread');
	//#endif
	//#ifdef MP
	if (options.spread) puid = options.spread;
	//#endif

	puid = parseInt(puid);
	if (Number.isNaN(puid)) {
		puid = 0;
	}
	if (puid && islogin) {
		spread(puid).then(res => {}).catch(res => {
			//#ifdef H5
			Cache.clear("spread");
			//#endif

			//#ifdef MP
			getApp().globalData.spread = 0;
			//#endif
		});
	}
}

export function isWeixin() {
	return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;
}

export function parseQuery() {
	const res = {};

	const query = (location.href.split("?")[1] || "")
		.trim()
		.replace(/^(\?|#|&)/, "");

	if (!query) {
		return res;
	}

	query.split("&").forEach(param => {
		const parts = param.replace(/\+/g, " ").split("=");
		const key = decodeURIComponent(parts.shift());
		const val = parts.length > 0 ? decodeURIComponent(parts.join("=")) : null;

		if (res[key] === undefined) {
			res[key] = val;
		} else if (Array.isArray(res[key])) {
			res[key].push(val);
		} else {
			res[key] = [res[key], val];
		}
	});

	return res;
}

// #ifdef H5
const VUE_APP_WS_URL = process.env.VUE_APP_WS_URL || `ws://${location.hostname}:20001`;
export {
	VUE_APP_WS_URL
}
// #endif

// 获取地址数据
export function getCityList() {
	return new Promise((resolve, reject) => {
		getCity().then(res => {
			resolve(res.data);
			Cache.set('cityList', res.data)
		})
	});
}

export default parseQuery;